﻿// 1096. 地牢大师.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//

#include <iostream>
#include <queue>
#include <cstring>


using namespace std;
/*
https://www.acwing.com/problem/content/1098/

你现在被困在一个三维地牢中，需要找到最快脱离的出路！

地牢由若干个单位立方体组成，其中部分不含岩石障碍可以直接通过，部分包含岩石障碍无法通过。

向北，向南，向东，向西，向上或向下移动一个单元距离均需要一分钟。

你不能沿对角线移动，迷宫边界都是坚硬的岩石，你不能走出边界范围。

请问，你有可能逃脱吗？

如果可以，需要多长时间？

输入格式
输入包含多组测试数据。

每组数据第一行包含三个整数 L,R,C分别表示地牢层数，以及每一层地牢的行数和列数。

接下来是 L个 R行 C列的字符矩阵，用来表示每一层地牢的具体状况。

每个字符用来描述一个地牢单元的具体状况。

其中, 充满岩石障碍的单元格用”#”表示，不含障碍的空单元格用”.”表示，你的起始位置用”S”表示，终点用”E”表示。

每一个字符矩阵后面都会包含一个空行。

当输入一行为”0 0 0”时，表示输入终止。

输出格式
每组数据输出一个结果，每个结果占一行。

如果能够逃脱地牢，则输出”Escaped in x minute(s).”，其中X为逃脱所需最短时间。

如果不能逃脱地牢，则输出”Trapped!”。

数据范围
1≤L,R,C≤100
输入样例：
3 4 5
S....
.###.
.##..
###.#

#####
#####
##.##
##...

#####
#####
#.###
####E

1 3 3
S##
#E#
###

0 0 0
输出样例：
Escaped in 11 minute(s).
Trapped!
*/

const int N = 200;

char gra[N][N][N];
int vis[N][N][N];

int l, h, w;
int startl, startx, starty;

int addx[] = { 1,-1,0,0 };
int addy[] = { 0,0,1,-1 };
int addz[] = { 1,-1 };

void solve() {
	queue<vector<int> > q;
	vector<int> t; t.push_back(startl); t.push_back(startx); t.push_back(starty); t.push_back(0);
	q.push(t);
	vis[startl][startx][starty] = 1;

	while (!q.empty()) {
		int z = q.front()[0]; int x = q.front()[1]; int y = q.front()[2];
		int step = q.front()[3]; q.pop();

		if (gra[z][x][y] == 'E') {
			cout << "Escaped in " << step << " minute(s)." << endl;
			return;
		}

		for (int i = 0; i < 2; i++) {
			int newz = z + addz[i];
			if (newz >= 0 && newz < l && vis[newz][x][y] == 0 && gra[newz][x][y] != '#') {
				vis[newz][x][y] = 1;
				vector<int> t; t.push_back(newz); t.push_back(x); t.push_back(y); t.push_back(step+1);
				q.push(t);
			}
		}

		for (int i = 0; i < 4; i++) {
			int newx = x + addx[i];
			int newy = y + addy[i];
			if (newx >= 0 && newx < h && newy >= 0 && newy < w && vis[z][newx][newy] == 0 && gra[z][newx][newy] != '#') {
				vis[z][newx][newy] = 1;
				vector<int> t; t.push_back(z); t.push_back(newx); t.push_back(newy); t.push_back(step + 1);
				q.push(t);
			}
		}
	}

	cout << "Trapped!" << endl;
}

int main()
{
	while (cin >> l >> h >> w) {
		if (l == 0 && h == 0 && w == 0) break;
		memset(gra, 0, sizeof gra);
		memset(vis, 0, sizeof vis);

		for (int i = 0; i < l; i++) {
			for (int j = 0; j < h; j++) {
				for (int k = 0; k < w; k++) {
					cin >> gra[i][j][k];
					if (gra[i][j][k] == 'S') {
						startl = i, startx = j, starty = k;
					}
				}
			}
		}

		solve();
	}
}